home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / toadebc.zip / ASC2EBC.ASM next >
Assembly Source File  |  1985-09-09  |  2KB  |  80 lines

  1. ; ASC2EBC.ASM -- Program to convert an ASCII file to EBCDIC
  2.  
  3. ; Usage -- A> ASC2EBC < input filespec > output filespec
  4.  
  5. ; From PC Mag 10-1-85
  6. ;v1.1    Toad Hall Tweak
  7. ;    Minor tweaks, no significant changes.
  8. ;    David Kirschbaum, Toad Hall
  9. ;    kirsch@usasoc.soc.mil
  10.  
  11. CSEG    Segment
  12.     Assume  CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
  13.     Org    0100h
  14. Entry:    jmp    Begin
  15.  
  16. Table    db    000H,001H,002H,003H,037H,02DH,02EH,02FH
  17.     db    016H,005H,025H,00BH,00CH,00DH,00EH,00FH
  18.     db    010H,011H,012H,013H,03CH,03DH,032H,026H
  19.     db    018H,019H,03FH,027H,022H,01DH,01EH,01FH
  20.     db    040H,05AH,07FH,07BH,05BH,06CH,050H,07DH
  21.     db    04DH,05DH,05CH,04EH,06BH,060H,04BH,061H
  22.     db    0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H
  23.     db    0F8H,0F9H,07AH,05EH,04CH,07EH,06EH,06FH
  24.     db    07CH,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H
  25.     db    0C8H,0C9H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H
  26.     db    0D7H,0D8H,0D9H,0E2H,0E3H,0E4H,0E5H,0E6H
  27.     db    0E7H,0E8H,0E9H,0ADH,0E0H,0BDH,08AH,06DH
  28.     db    07DH,081H,082H,083H,084H,085H,086H,087H
  29.     db    088H,089H,091H,092H,093H,094H,095H,096H
  30.     db    097H,098H,099H,0A2H,0A3H,0A4H,0A5H,0A6H
  31.     db    0A7H,0A8H,0A9H,0C0H,04FH,0D0H,0A1H,007H
  32.  
  33. Begin:    cld                ; Direction Forward
  34.     mov    DX,Offset EndProg    ; Beyone end of program
  35.     mov    CX,SP            ; Top of segment
  36.     sub    CX,100h            ; Leave foom for stack
  37.     sub    CX,DX            ; Number of bytes for buffer
  38.  
  39. MainLoop:
  40. ;v1.1    mov    BX,0            ; Standard Input
  41.     xor    bx,bx            ; Standard Input        v1.1
  42.     mov    AH,3Fh            ; Read Function Call
  43.     int    21h            ; Call DOS
  44.     jc    Exit            ; Exit if error
  45.  
  46.     push    CX            ; Save requested read bytes
  47.     mov    CX,AX            ; Get bytes read
  48.     jcxz    Exit            ; Exit if no bytes read
  49.  
  50.     mov    BX,Offset Table        ; Conversion Table
  51.     mov    SI,Offset EndProg    ; Beginning of Data
  52.     mov    DI,SI            ; Destination is same
  53.     push    CX            ; Save bytes actually read
  54.  
  55.     mov    ah,7FH            ;handy constant for stripping    v1.1
  56. Conversion:
  57.     lodsb                ; Get byte
  58.     and    AL,ah    ;7Fh        ; Strip out high bit        v1.1
  59.     xlat    Table            ; Convert it
  60.     stosb                ; Save byte
  61.     loop    Conversion        ; For all data
  62.  
  63.     pop    CX            ; Get back bytes read
  64.     mov    BX,1            ; Standard Output Handle
  65.     mov    AH,40h            ; Write Function Call
  66.     int    21h            ; Call DOS
  67.     jc    Exit            ; Exit if error
  68.  
  69.     cmp    AX,CX            ; See if all bytes written
  70.     jb    Exit            ; Exit if disk is full
  71.  
  72.     pop    CX            ; Get back bytes to read
  73.     jmp    MainLoop        ; Do next read
  74.  
  75. Exit:    int    20h            ; Terminate Program
  76.  
  77. EndProg    Label    Byte            ; Buffer Area
  78. CSEG    EndS
  79.     End    Entry
  80.